/**
 * @FilePath     : log_entry_dto.h
 * @Description  : 日志条目数据传输对象 - 用于跨层日志数据传递
 */
#pragma once

#include <QString>
#include <QDateTime>

namespace kernel::dtos {

/**
 * @brief 日志条目 DTO
 * @details 用于在层之间传递日志数据，支持 UI 展示
 */
struct LogEntryDto {
    QDateTime timestamp;      // 时间戳
    QString level;            // 日志级别: "debug", "info", "warn", "error", "critical"
    QString source;           // 来源: "VehicleService", "DispatcherManager" 等
    QString message;          // 日志消息
    QString file;             // 源文件（可选）
    int line{0};              // 行号（可选）
    QString function;         // 函数名（可选）

    LogEntryDto() = default;

    LogEntryDto(const QDateTime& ts, const QString& lvl,
                const QString& src, const QString& msg)
        : timestamp(ts)
        , level(lvl)
        , source(src)
        , message(msg)
    {}

    // 辅助方法：格式化时间字符串（毫秒精度）
    QString formattedTime() const {
        return timestamp.toString("HH:mm:ss.zzz");
    }

    // 辅助方法：短时间格式（秒精度）
    QString shortTime() const {
        return timestamp.toString("HH:mm:ss");
    }

    // 辅助方法：完整日期时间
    QString fullDateTime() const {
        return timestamp.toString("yyyy-MM-dd HH:mm:ss.zzz");
    }
};

} // namespace kernel::dtos
